iT邦幫忙

2024 iThome 鐵人賽

DAY 11
0

Day11

腳本架構

✦ using

◌ 代表使用哪些 Library( 函式庫 ),如同使用工具箱的概念。
◌ 撰寫方式為 using + 命名空間。

01

✦ public

◌ 是類型和類型成員的存取修飾詞,意指 未限制存取 ,大家都可以取用。

02

✦ class

◌ 用於宣告類別

03

✦ MonoBehaviour

◌ 代表繼承 MonoBehaviour 這個類別。

◌ 擁有這個類別,就可以使用一些 Unity 專有的功能。

04

✦ Start( )

◌ 在第一幀畫面渲染出來( Update )之前,執行 Start 括號中的程式碼,並且 只執行一次 。

◌ 通常會在 Start 的程式裡面 設定遊戲初始值 ,將資料進行初始化(initialize)。

05

✦ Update( )

◌ Update 中的程式碼,在遊戲開始後,畫面 每更新一幀,都會執行一次 。
◌ 通常會將需要不斷進行判斷或執行的程式放在 Update 裡面。

06

✦ //

◌ 寫在雙斜線後的文字,皆為註解,將 不影響程式執行 。

07

📝 古古的小提醒: 更多詳細內容可以 點此複習 喔!

C#基礎

基本資料型別

✦ int

◌  整數,有正負號。
◌  EX: 0, 1, 2 ……

✦ float

◌  浮點數,儲存含有小數點的值。
◌  值的後方 須加上一個 **f** 。
◌  EX: 0.5f, 1.3f, 2.7f ……

✦ bool

◌  布林值,是存放 true 或 false 的變數,用來判斷對錯。

✦ string

◌  字串,前後使用 雙引號 包裝。
◌  EX: “ Hello World ! ” , “ GUGU “ , “ C “ ……

✦ char

◌  字元,前後使用 單引號 包裝。
◌  此型別 較少使用 ,因字元也可以使用字串的方式表示。
◌  EX: ‘A’ , ‘B’ , ‘C’ ……

變數宣告

✦ 宣告方式

◌  `資料型別`  `變數`  =  `值` ;
◌  變數可以自行命名,值也可以隨意指定。
◌  EX: int num = 10;  ,  float num1 = 10.5f ;  ,  bool con = true; 

08

示意圖以 int num = 10 ; 為例

資料型別的四則運算

✦ 四則運算小練習

請利用以下宣告之變數,計算出第 1 ~ 5 題的值。

int num = 10;

int num1 = 4;

float num2 = 10.5f;

bool con = true;

string name = "GUGU";

char first = 'C';

// 第一題
Debug.Log(num / num1);

// 第二題
Debug.Log(name + num1);

// 第三題
Debug.Log(name + first);

// 第四題
Debug.Log(num2 * 100);

// 第五題
Debug.Log(num + num + num);

解答與解析 —— 點擊左側三角形展開查看

➊   num / num1  == `2`
雖然 10 ÷ 4 的結果應為 2.5,但在程式當中,因為有型別的限制 ( 強型別 / 弱型別 ),因此在沒有進行型別轉換的情況下,用整數除以整數的結果,也會等於整數。

➋   name + num1  == `GUGU4`
字串+其他 = 字串  ➔  在這個輸出結果當中的 4 也因此轉換成字串的形式。

➌   name + first  == `GUGUC`
在程式裡面,每個文字都要斤斤計較,包含大小寫。

➍   num2 * 100  == `1050`
剛好進位的關係,因此 .0 並不會顯示。

➎   num + num + num  == `30`
num = 10,因此 num + num + num = 10 + 10 + 10 = 30。

** 💡古古的小提醒:** 可以多多利用 Debug.Log() 搭配 console ****列印結果,如果忘記用法的話也可以 點此複習 唷!

Function( 函式 )

✦ 使用方式

◌  `void` /  `資料型態`   `方法名稱`   `( )`    `{ }`
◌  可視為一個執行單元,將程式碼寫在 {  } 中,方便在需要時進行 收納與呼叫。

09

示意圖以 void Test1( ) { } 為例

** 📝古古的課程補充:**

➊  `void` 代表不回傳任何東西。
➋  `方法名稱` 可自行命名,但開頭字母需大寫,且不得為數字或其他符號。
➌  `()` 可導入參數。
➍  `{ }` 中夾帶程式內容。

if / else if / else 條件判斷式

✦ 使用方式

◌  意為「 如果某條件成立 」就要…,「 否則 」就要...的需求。
◌  層級由大至小依序為 if **➔** else if **➔** else 。
◌  if 條件判斷式 可單獨出現 。
◌  else if 條件判斷式的數量可以是零個,也 可以有很多個 ,依條件數量而定。
◌  當「 已有一個條件滿足並執行結果 」的情況下, 便 不再接續判斷其餘條件 。
◌  if / else if / else 基礎語法如下:
if ( 條件A ) 
{
	程式區塊A  // 如果條件A為true,執行此區塊的程式碼
}
else if ( 條件B ) // 如果條件A為false,才會檢查條件B
{  
	程式區塊B  // 如果條件B為true,則執行此區塊的程式碼
}
else 
{  
	程式區塊C   // 如果以上條件判斷都為false,則執行這個區塊的程式碼
}

10

以上述條件判斷式為例,當呼叫 Test2 時,Console 介面將印出 Yes3 的結果。

** 📝 古古的課程補充:**
基礎判斷符號介紹 - == :等於 / && :and / || :or / ! :not

✦ 條件判斷小練習

請透過以下宣告之變數,判斷出第 1 ~ 6 題的結果。

int numA = 100;

int numB = 100;

int numC = 10;

bool isPass = false;

string jobTitle = "Boss";

// 第一題
if( jobTitle == "Boss" ) 
{
	Debug.Log( "A" );
}

// 第二題
if( isPass ) 
{
	Debug.Log( "B" );
}

// 第三題
if( !((numA * 100) / (10 * 10) != numB) ) 
{
	Debug.Log( "C" );
}

// 第四題
if( jobTitle + "s" == "bosss" ) 
{
	Debug.Log( "D" );
}

// 第五題
if( numA >= numB ) 
{
	Debug.Log( "E" );
}

// 第六題
if( (numC + "0") == ("10" + "0") ) 
{
	Debug.Log( "F" );
}

解答與解析 —— 點擊左側三角形展開查看

➊   jobTitle == "Boss" 條件成立,印出 A

字串 = 字串,且大小寫相同,因此條件成立。

➋   isPass == false,不執行結果

條件判斷須為 true 才會執行 {  } 中的程式碼。

➌   !((numA * 100) / (10 * 10) != numB) 條件成立,印出 C

括號中的程式碼優先進行運算,得出 (numA * 100) / (10 * 10) = numA。

再來判斷,numA != numB( numA 不等於 numB )為 false。

最後整理完的程式碼為 !( false ) = not false = true,表示條件成立。

➍   jobTitle + "s" != "bosss",不執行結果

jobTitle + “s” 應為 “Bosss” 而非 “bosss”,表示條件判斷式中 ( jobTitle + “s” == “bosss” ) 的條件不成立,因此不執行結果。

➎   numA >= numB 條件成立,印出 E

判斷 numA 是否大於或等於 numB,由於 numA = 100 = numB,因此條件成立。

➏   (numC + "0") == ("10" + "0") 條件成立,印出 F

字串+其他 = 字串  ➔  因此 numC + “0” = “10” + “0” 是正確的敘述。

for 迴圈

✦ 使用方式

◌  用來 處理重複的事件 ,且可自動化執行某些固定的步驟與流程。
◌  每次要進入 for 迴圈時,都會先執行初始設定式一次。
◌  在每次要執行迴圈主體之前,都會先檢查持續條件是否成立。
◌  持續條件成立,才會繼續執行下一次的迴圈主體。
◌  每完成一次迴圈主體,都會執行迭代式一次,然後再檢查是否達成持續條件。
◌  for 迴圈 基礎語法如下:
for (初始變數; 持續條件; 迭代式)
{
    陳述句一; 
    陳述句二; 
}

11

📝古古的課程補充:
◌ while 迴圈 與 for 迴圈類似,皆是用來處理重複的事件。
◌ 寫法: while ( 條件A ) { 程式區塊B }
➔ 若條件 A 成立,則不斷執行程式區塊 B,反之,則離開迴圈。
◌ 需小心不要落入 無窮迴圈 當中。
◌ 在 Unity 中較不常用,因其功能與 Update 用法類似。

✦ for 迴圈小練習

請透過以下程式碼,判斷出第 1 ~ 5 題的結果。

// 第一題
for( int i = 0; i < 10; i++ ) 
{
	Debug.Log( i );
}

// 第二題
int sum = 10;
for( int i = 0; i < 10; i++ ) 
{
	sum = sum + i;
}
Debug.Log( sum );

// 第三題
for( int i = 0; i < 10; i+=2 ) 
{
	Debug.Log( i );
}

// 第四題
for( int i = 10; i <= 1; i-- ) 
{
	Debug.Log( i );
}

// 第五題
for( int i = 11; i < 10; i-- ) 
{
	Debug.Log( i * 20000 + 100 * 12345 - 70 * 456 + 80 * 2100 );
}

解答與解析 —— 點擊左側三角形展開查看

➊   Debug.Log( i ) = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
i 的初始值為 0,每完成一次迴圈 i 的值會加 1,直到 i ≥ 10 時停止迴圈。
因此最終輸出結果為 0, 1, 2, 3, 4, 5, 6, 7, 8, 9

➋   Debug.Log( sum ) = 55
在此迴圈中,i 的值為 0 ~ 9,且 sum 初始值為 10。
因此 sum = sum + i = 10 + 0 + 1 + 2 + …… + 9 = 55。

➌   Debug.Log( i ) = 0, 2, 4, 6, 8
i 的初始值為 0,每完成一次迴圈 i 的值會加 2,直到 i ≥ 10 時停止迴圈。
因此最終輸出結果為 0, 2, 4, 6, 8。

➍   不執行程式碼
此迴圈需在 i ≤ 1 時才會執行,但初始值為 10,條件不符,因此不執行。

➎   不執行程式碼
此迴圈需在 i < 10 時才會執行,但初始值為 11,條件不符,因此不執行。

上一篇
Day10 / Unity 跟上時代!如何設定 Visual Studio Code 編輯器環境
下一篇
Day12 / Unity C# 語法練習開始!躲避子彈小遊戲 (一) 玩家控制
系列文
初心者限定!設計師帶你學 Unity 3D 遊戲程式設計31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言